{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Chapter 14 – Recurrent Neural Networks**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "_This notebook contains all the sample code and solutions to the exercises in chapter 14._"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, let's make sure this notebook works well in both python 2 and 3, import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# To support both python 2 and python 3\n",
    "from __future__ import division, print_function, unicode_literals\n",
    "\n",
    "# Common imports\n",
    "import numpy as np\n",
    "import os\n",
    "\n",
    "# to make this notebook's output stable across runs\n",
    "def reset_graph(seed=42):\n",
    "    tf.reset_default_graph()\n",
    "    tf.set_random_seed(seed)\n",
    "    np.random.seed(seed)\n",
    "\n",
    "# To plot pretty figures\n",
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['axes.labelsize'] = 14\n",
    "plt.rcParams['xtick.labelsize'] = 12\n",
    "plt.rcParams['ytick.labelsize'] = 12\n",
    "\n",
    "# Where to save the figures\n",
    "PROJECT_ROOT_DIR = \".\"\n",
    "CHAPTER_ID = \"rnn\"\n",
    "\n",
    "def save_fig(fig_id, tight_layout=True):\n",
    "    path = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id + \".png\")\n",
    "    print(\"Saving figure\", fig_id)\n",
    "    if tight_layout:\n",
    "        plt.tight_layout()\n",
    "    plt.savefig(path, format='png', dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then of course we will need TensorFlow:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic RNNs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Manual RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 3\n",
    "n_neurons = 5\n",
    "\n",
    "X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "\n",
    "Wx = tf.Variable(tf.random_normal(shape=[n_inputs, n_neurons],dtype=tf.float32))\n",
    "Wy = tf.Variable(tf.random_normal(shape=[n_neurons,n_neurons],dtype=tf.float32))\n",
    "b = tf.Variable(tf.zeros([1, n_neurons], dtype=tf.float32))\n",
    "\n",
    "Y0 = tf.tanh(tf.matmul(X0, Wx) + b)\n",
    "Y1 = tf.tanh(tf.matmul(Y0, Wy) + tf.matmul(X1, Wx) + b)\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]]) # t = 0\n",
    "X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]]) # t = 1\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.0664006   0.9625767   0.68105793  0.7091854  -0.898216  ]\n",
      " [ 0.9977755  -0.719789   -0.9965761   0.9673924  -0.9998972 ]\n",
      " [ 0.99999774 -0.99898803 -0.9999989   0.9967762  -0.9999999 ]\n",
      " [ 1.         -1.         -1.         -0.99818915  0.9995087 ]]\n"
     ]
    }
   ],
   "source": [
    "print(Y0_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.         -1.         -1.          0.4020025  -0.9999998 ]\n",
      " [-0.12210419  0.62805265  0.9671843  -0.9937122  -0.2583937 ]\n",
      " [ 0.9999983  -0.9999994  -0.9999975  -0.85943305 -0.9999881 ]\n",
      " [ 0.99928284 -0.99999815 -0.9999058   0.9857963  -0.92205757]]\n"
     ]
    }
   ],
   "source": [
    "print(Y1_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using `static_rnn()`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**: `tf.contrib.rnn` was partially moved to the core API in TensorFlow 1.2. Most of the `*Cell` and `*Wrapper` classes are now available in `tf.nn.rnn_cell`, and the `tf.contrib.rnn.static_rnn()` function is available as `tf.nn.static_rnn()`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_inputs = 3\n",
    "n_neurons = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-8-3de6ced86dc1>:6: BasicRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "This class is equivalent as tf.keras.layers.SimpleRNNCell, and will be replaced by that in Tensorflow 2.0.\n"
     ]
    }
   ],
   "source": [
    "reset_graph()\n",
    "\n",
    "X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "\n",
    "basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "output_seqs, states = tf.nn.static_rnn(basic_cell, [X0, X1],\n",
    "                                       dtype=tf.float32)\n",
    "Y0, Y1 = output_seqs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]])\n",
    "X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]])\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.30741334, -0.32884315, -0.6542847 , -0.9385059 ,  0.52089024],\n",
       "       [ 0.99122757, -0.9542541 , -0.7518079 , -0.9995208 ,  0.9820235 ],\n",
       "       [ 0.9999268 , -0.99783254, -0.8247353 , -0.9999963 ,  0.99947774],\n",
       "       [ 0.996771  , -0.68750614,  0.8419969 ,  0.9303911 ,  0.8120684 ]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y0_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.99998885, -0.99976057, -0.0667929 , -0.9999803 ,  0.99982214],\n",
       "       [-0.6524943 , -0.51520866, -0.37968948, -0.5922594 , -0.08968379],\n",
       "       [ 0.99862397, -0.99715203, -0.03308626, -0.9991566 ,  0.9932902 ],\n",
       "       [ 0.99681675, -0.9598194 ,  0.39660627, -0.8307606 ,  0.79671973]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y1_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow_graph_in_jupyter import show_graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
       "        <script src=&quot;//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js&quot;></script>\n",
       "        <script>\n",
       "          function load() {\n",
       "            document.getElementById(&quot;graph0.3745401188473625&quot;).pbtxt = 'node {\\n  name: &quot;Placeholder&quot;\\n  op: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;Placeholder_1&quot;\\n  op: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape&quot;\\n  input: &quot;rnn/strided_slice/stack&quot;\\n  input: &quot;rnn/strided_slice/stack_1&quot;\\n  input: &quot;rnn/strided_slice/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  op: &quot;Fill&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;index_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: -0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  op: &quot;RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;seed&quot;\\n    value {\\n      i: 42\\n    }\\n  }\\n  attr {\\n    key: &quot;seed2&quot;\\n    value {\\n      i: 20\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  op: &quot;Sub&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  op: &quot;Mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 8\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n          dim {\\n            size: 5\\n          }\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;Placeholder&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/MatMul&quot;\\n  op: &quot;MatMul&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_a&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_b&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/BiasAdd&quot;\\n  op: &quot;BiasAdd&quot;\\n  input: &quot;rnn/basic_rnn_cell/MatMul&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;data_format&quot;\\n    value {\\n      s: &quot;NHWC&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/Tanh&quot;\\n  op: &quot;Tanh&quot;\\n  input: &quot;rnn/basic_rnn_cell/BiasAdd&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat_1/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat_1&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;Placeholder_1&quot;\\n  input: &quot;rnn/basic_rnn_cell/Tanh&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat_1/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/MatMul_1&quot;\\n  op: &quot;MatMul&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat_1&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_a&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_b&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/BiasAdd_1&quot;\\n  op: &quot;BiasAdd&quot;\\n  input: &quot;rnn/basic_rnn_cell/MatMul_1&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;data_format&quot;\\n    value {\\n      s: &quot;NHWC&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/Tanh_1&quot;\\n  op: &quot;Tanh&quot;\\n  input: &quot;rnn/basic_rnn_cell/BiasAdd_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;init&quot;\\n  op: &quot;NoOp&quot;\\n  input: &quot;^rnn/basic_rnn_cell/bias/Assign&quot;\\n  input: &quot;^rnn/basic_rnn_cell/kernel/Assign&quot;\\n}\\n';\n",
       "          }\n",
       "        </script>\n",
       "        <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
       "        <div style=&quot;height:600px&quot;>\n",
       "          <tf-graph-basic id=&quot;graph0.3745401188473625&quot;></tf-graph-basic>\n",
       "        </div>\n",
       "    \"></iframe>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_graph(tf.get_default_graph())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Packing sequences"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 2\n",
    "n_inputs = 3\n",
    "n_neurons = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "X_seqs = tf.unstack(tf.transpose(X, perm=[1, 0, 2]))\n",
    "\n",
    "basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "output_seqs, states = tf.nn.static_rnn(basic_cell, X_seqs,\n",
    "                                       dtype=tf.float32)\n",
    "outputs = tf.transpose(tf.stack(output_seqs), perm=[1, 0, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.array([\n",
    "        # t = 0      t = 1 \n",
    "        [[0, 1, 2], [9, 8, 7]], # instance 1\n",
    "        [[3, 4, 5], [0, 0, 0]], # instance 2\n",
    "        [[6, 7, 8], [6, 5, 4]], # instance 3\n",
    "        [[9, 0, 1], [3, 2, 1]], # instance 4\n",
    "    ])\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val = outputs.eval(feed_dict={X: X_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-0.45652324 -0.68064123  0.40938237  0.63104504 -0.45732826]\n",
      "  [-0.9428799  -0.9998869   0.94055814  0.9999985  -0.9999997 ]]\n",
      "\n",
      " [[-0.8001535  -0.9921827   0.7817797   0.9971032  -0.9964609 ]\n",
      "  [-0.637116    0.11300927  0.5798437   0.4310559  -0.6371699 ]]\n",
      "\n",
      " [[-0.93605185 -0.9998379   0.9308867   0.9999815  -0.99998295]\n",
      "  [-0.9165386  -0.9945604   0.896054    0.99987197 -0.9999751 ]]\n",
      "\n",
      " [[ 0.9927369  -0.9981933  -0.55543643  0.9989031  -0.9953323 ]\n",
      "  [-0.02746338 -0.73191994  0.7827872   0.9525682  -0.9781773 ]]]\n"
     ]
    }
   ],
   "source": [
    "print(outputs_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.9428799  -0.9998869   0.94055814  0.9999985  -0.9999997 ]\n",
      " [-0.637116    0.11300927  0.5798437   0.4310559  -0.6371699 ]\n",
      " [-0.9165386  -0.9945604   0.896054    0.99987197 -0.9999751 ]\n",
      " [-0.02746338 -0.73191994  0.7827872   0.9525682  -0.9781773 ]]\n"
     ]
    }
   ],
   "source": [
    "print(np.transpose(outputs_val, axes=[1, 0, 2])[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using `dynamic_rnn()`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 2\n",
    "n_inputs = 3\n",
    "n_neurons = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "\n",
    "basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.array([\n",
    "        [[0, 1, 2], [9, 8, 7]], # instance 1\n",
    "        [[3, 4, 5], [0, 0, 0]], # instance 2\n",
    "        [[6, 7, 8], [6, 5, 4]], # instance 3\n",
    "        [[9, 0, 1], [3, 2, 1]], # instance 4\n",
    "    ])\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val = outputs.eval(feed_dict={X: X_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-0.85115266  0.87358344  0.5802911   0.8954789  -0.0557505 ]\n",
      "  [-0.999996    0.99999577  0.9981815   1.          0.37679607]]\n",
      "\n",
      " [[-0.9983293   0.9992038   0.98071456  0.999985    0.25192663]\n",
      "  [-0.7081804  -0.0772338  -0.85227895  0.5845349  -0.78780943]]\n",
      "\n",
      " [[-0.9999827   0.99999535  0.9992863   1.          0.5159072 ]\n",
      "  [-0.9993956   0.9984095   0.83422637  0.99999976 -0.47325212]]\n",
      "\n",
      " [[ 0.87888587  0.07356028  0.97216916  0.9998546  -0.7351168 ]\n",
      "  [-0.9134514   0.3600957   0.7624866   0.99817705  0.80142   ]]]\n"
     ]
    }
   ],
   "source": [
    "print(outputs_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
       "        <script src=&quot;//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js&quot;></script>\n",
       "        <script>\n",
       "          function load() {\n",
       "            document.getElementById(&quot;graph0.3745401188473625&quot;).pbtxt = 'node {\\n  name: &quot;Placeholder&quot;\\n  op: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 2\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Rank&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 3\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/range/start&quot;\\n  input: &quot;rnn/Rank&quot;\\n  input: &quot;rnn/range/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat/values_0&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/concat/values_0&quot;\\n  input: &quot;rnn/range&quot;\\n  input: &quot;rnn/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/transpose&quot;\\n  op: &quot;Transpose&quot;\\n  input: &quot;Placeholder&quot;\\n  input: &quot;rnn/concat&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tperm&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape&quot;\\n  input: &quot;rnn/strided_slice/stack&quot;\\n  input: &quot;rnn/strided_slice/stack_1&quot;\\n  input: &quot;rnn/strided_slice/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  op: &quot;Fill&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;index_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape_1&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape_1&quot;\\n  input: &quot;rnn/strided_slice_1/stack&quot;\\n  input: &quot;rnn/strided_slice_1/stack_1&quot;\\n  input: &quot;rnn/strided_slice_1/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape_2&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape_2&quot;\\n  input: &quot;rnn/strided_slice_2/stack&quot;\\n  input: &quot;rnn/strided_slice_2/stack_1&quot;\\n  input: &quot;rnn/strided_slice_2/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/ExpandDims/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/ExpandDims&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice_2&quot;\\n  input: &quot;rnn/ExpandDims/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_1/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_1&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/ExpandDims&quot;\\n  input: &quot;rnn/Const&quot;\\n  input: &quot;rnn/concat_1/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/zeros/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/zeros&quot;\\n  op: &quot;Fill&quot;\\n  input: &quot;rnn/concat_1&quot;\\n  input: &quot;rnn/zeros/Const&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;index_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/time&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArray&quot;\\n  op: &quot;TensorArrayV3&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;clear_after_read&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;dynamic_size&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;element_shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;identical_element_shapes&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;tensor_array_name&quot;\\n    value {\\n      s: &quot;rnn/dynamic_rnn/output_0&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArray_1&quot;\\n  op: &quot;TensorArrayV3&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;clear_after_read&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;dynamic_size&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;element_shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;identical_element_shapes&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;tensor_array_name&quot;\\n    value {\\n      s: &quot;rnn/dynamic_rnn/input_0&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/Shape&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/TensorArrayUnstack/Shape&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice/stack&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice/stack_1&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/range/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/range/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/range&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/TensorArrayUnstack/range/start&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice&quot;\\n  input: &quot;rnn/TensorArrayUnstack/range/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3&quot;\\n  op: &quot;TensorArrayScatterV3&quot;\\n  input: &quot;rnn/TensorArray_1&quot;\\n  input: &quot;rnn/TensorArrayUnstack/range&quot;\\n  input: &quot;rnn/transpose&quot;\\n  input: &quot;rnn/TensorArray_1:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/transpose&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Maximum/x&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Maximum&quot;\\n  op: &quot;Maximum&quot;\\n  input: &quot;rnn/Maximum/x&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Minimum&quot;\\n  op: &quot;Minimum&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  input: &quot;rnn/Maximum&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/iteration_counter&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/while/iteration_counter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter_1&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/time&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter_2&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArray:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter_3&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter&quot;\\n  input: &quot;rnn/while/NextIteration&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge_1&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter_1&quot;\\n  input: &quot;rnn/while/NextIteration_1&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge_2&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter_2&quot;\\n  input: &quot;rnn/while/NextIteration_2&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge_3&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter_3&quot;\\n  input: &quot;rnn/while/NextIteration_3&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less&quot;\\n  op: &quot;Less&quot;\\n  input: &quot;rnn/while/Merge&quot;\\n  input: &quot;rnn/while/Less/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less_1&quot;\\n  op: &quot;Less&quot;\\n  input: &quot;rnn/while/Merge_1&quot;\\n  input: &quot;rnn/while/Less_1/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less_1/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/Minimum&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/LogicalAnd&quot;\\n  op: &quot;LogicalAnd&quot;\\n  input: &quot;rnn/while/Less&quot;\\n  input: &quot;rnn/while/Less_1&quot;\\n}\\nnode {\\n  name: &quot;rnn/while/LoopCond&quot;\\n  op: &quot;LoopCond&quot;\\n  input: &quot;rnn/while/LogicalAnd&quot;\\n}\\nnode {\\n  name: &quot;rnn/while/Switch&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Switch_1&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge_1&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge_1&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Switch_2&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge_2&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge_2&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Switch_3&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge_3&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge_3&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity_1&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch_1:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity_2&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch_2:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity_3&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch_3:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add/y&quot;\\n  op: &quot;Const&quot;\\n  input: &quot;^rnn/while/Identity&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/while/Identity&quot;\\n  input: &quot;rnn/while/add/y&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayReadV3&quot;\\n  op: &quot;TensorArrayReadV3&quot;\\n  input: &quot;rnn/while/TensorArrayReadV3/Enter&quot;\\n  input: &quot;rnn/while/Identity_1&quot;\\n  input: &quot;rnn/while/TensorArrayReadV3/Enter_1&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayReadV3/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArray_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_RESOURCE\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayReadV3/Enter_1&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: -0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  op: &quot;RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;seed&quot;\\n    value {\\n      i: 42\\n    }\\n  }\\n  attr {\\n    key: &quot;seed2&quot;\\n    value {\\n      i: 87\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  op: &quot;Sub&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  op: &quot;Mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 8\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n          dim {\\n            size: 5\\n          }\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  input: &quot;^rnn/while/Identity&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/while/TensorArrayReadV3&quot;\\n  input: &quot;rnn/while/Identity_3&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/MatMul&quot;\\n  op: &quot;MatMul&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/concat&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/MatMul/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_a&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_b&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/MatMul/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/BiasAdd&quot;\\n  op: &quot;BiasAdd&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/MatMul&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/BiasAdd/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;data_format&quot;\\n    value {\\n      s: &quot;NHWC&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/BiasAdd/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n  op: &quot;Tanh&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/BiasAdd&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3&quot;\\n  op: &quot;TensorArrayWriteV3&quot;\\n  input: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter&quot;\\n  input: &quot;rnn/while/Identity_1&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n  input: &quot;rnn/while/Identity_2&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/basic_rnn_cell/Tanh&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArray&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_RESOURCE\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/basic_rnn_cell/Tanh&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add_1/y&quot;\\n  op: &quot;Const&quot;\\n  input: &quot;^rnn/while/Identity&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add_1&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/while/Identity_1&quot;\\n  input: &quot;rnn/while/add_1/y&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/add&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration_1&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/add_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration_2&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration_3&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit_1&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit_2&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch_2&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit_3&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch_3&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/TensorArraySizeV3&quot;\\n  op: &quot;TensorArraySizeV3&quot;\\n  input: &quot;rnn/TensorArray&quot;\\n  input: &quot;rnn/while/Exit_2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/range/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/range/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/range&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/TensorArrayStack/range/start&quot;\\n  input: &quot;rnn/TensorArrayStack/TensorArraySizeV3&quot;\\n  input: &quot;rnn/TensorArrayStack/range/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/TensorArrayGatherV3&quot;\\n  op: &quot;TensorArrayGatherV3&quot;\\n  input: &quot;rnn/TensorArray&quot;\\n  input: &quot;rnn/TensorArrayStack/range&quot;\\n  input: &quot;rnn/while/Exit_2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;element_shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Const_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Rank_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 3\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range_1/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range_1/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range_1&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/range_1/start&quot;\\n  input: &quot;rnn/Rank_1&quot;\\n  input: &quot;rnn/range_1/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_2/values_0&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_2/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_2&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/concat_2/values_0&quot;\\n  input: &quot;rnn/range_1&quot;\\n  input: &quot;rnn/concat_2/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/transpose_1&quot;\\n  op: &quot;Transpose&quot;\\n  input: &quot;rnn/TensorArrayStack/TensorArrayGatherV3&quot;\\n  input: &quot;rnn/concat_2&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tperm&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;init&quot;\\n  op: &quot;NoOp&quot;\\n  input: &quot;^rnn/basic_rnn_cell/bias/Assign&quot;\\n  input: &quot;^rnn/basic_rnn_cell/kernel/Assign&quot;\\n}\\n';\n",
       "          }\n",
       "        </script>\n",
       "        <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
       "        <div style=&quot;height:600px&quot;>\n",
       "          <tf-graph-basic id=&quot;graph0.3745401188473625&quot;></tf-graph-basic>\n",
       "        </div>\n",
       "    \"></iframe>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_graph(tf.get_default_graph())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setting the sequence lengths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 2\n",
    "n_inputs = 3\n",
    "n_neurons = 5\n",
    "\n",
    "reset_graph()\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "seq_length = tf.placeholder(tf.int32, [None])\n",
    "outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32,\n",
    "                                    sequence_length=seq_length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.array([\n",
    "        # step 0     step 1\n",
    "        [[0, 1, 2], [9, 8, 7]], # instance 1\n",
    "        [[3, 4, 5], [0, 0, 0]], # instance 2 (padded with zero vectors)\n",
    "        [[6, 7, 8], [6, 5, 4]], # instance 3\n",
    "        [[9, 0, 1], [3, 2, 1]], # instance 4\n",
    "    ])\n",
    "seq_length_batch = np.array([2, 1, 2, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val, states_val = sess.run(\n",
    "        [outputs, states], feed_dict={X: X_batch, seq_length: seq_length_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-0.9123188   0.16516446  0.5548655  -0.39159346  0.20846416]\n",
      "  [-1.          0.956726    0.99831694  0.99970174  0.96518576]]\n",
      "\n",
      " [[-0.9998612   0.6702289   0.9723653   0.6631046   0.74457586]\n",
      "  [ 0.          0.          0.          0.          0.        ]]\n",
      "\n",
      " [[-0.99999976  0.8967997   0.9986295   0.9647514   0.93662   ]\n",
      "  [-0.9999526   0.9681953   0.96002865  0.98706263  0.85459226]]\n",
      "\n",
      " [[-0.96435434  0.99501586 -0.36150697  0.9983378   0.999497  ]\n",
      "  [-0.9613586   0.9568762   0.7132288   0.97729224 -0.0958299 ]]]\n"
     ]
    }
   ],
   "source": [
    "print(outputs_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-1.          0.956726    0.99831694  0.99970174  0.96518576]\n",
      " [-0.9998612   0.6702289   0.9723653   0.6631046   0.74457586]\n",
      " [-0.9999526   0.9681953   0.96002865  0.98706263  0.85459226]\n",
      " [-0.9613586   0.9568762   0.7132288   0.97729224 -0.0958299 ]]\n"
     ]
    }
   ],
   "source": [
    "print(states_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training a sequence classifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note: the book uses `tensorflow.contrib.layers.fully_connected()` rather than `tf.layers.dense()` (which did not exist when this chapter was written). It is now preferable to use `tf.layers.dense()`, because anything in the contrib module may change or be deleted without notice. The `dense()` function is almost identical to the `fully_connected()` function. The main differences relevant to this chapter are:\n",
    "* several parameters are renamed: `scope` becomes `name`, `activation_fn` becomes `activation` (and similarly the `_fn` suffix is removed from other parameters such as `normalizer_fn`), `weights_initializer` becomes `kernel_initializer`, etc.\n",
    "* the default `activation` is now `None` rather than `tf.nn.relu`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 28\n",
    "n_inputs = 28\n",
    "n_neurons = 150\n",
    "n_outputs = 10\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.int32, [None])\n",
    "\n",
    "basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)\n",
    "\n",
    "logits = tf.layers.dense(states, n_outputs)\n",
    "xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y,\n",
    "                                                          logits=logits)\n",
    "loss = tf.reduce_mean(xentropy)\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "correct = tf.nn.in_top_k(logits, y, 1)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Warning**: `tf.examples.tutorials.mnist` is deprecated. We will use `tf.keras.datasets.mnist` instead."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()\n",
    "X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0\n",
    "X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0\n",
    "y_train = y_train.astype(np.int32)\n",
    "y_test = y_test.astype(np.int32)\n",
    "X_valid, X_train = X_train[:5000], X_train[5000:]\n",
    "y_valid, y_train = y_train[:5000], y_train[5000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "def shuffle_batch(X, y, batch_size):\n",
    "    rnd_idx = np.random.permutation(len(X))\n",
    "    n_batches = len(X) // batch_size\n",
    "    for batch_idx in np.array_split(rnd_idx, n_batches):\n",
    "        X_batch, y_batch = X[batch_idx], y[batch_idx]\n",
    "        yield X_batch, y_batch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test = X_test.reshape((-1, n_steps, n_inputs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Last batch accuracy: 0.9533333 Test accuracy: 0.9288\n",
      "1 Last batch accuracy: 0.96 Test accuracy: 0.9471\n",
      "2 Last batch accuracy: 0.96 Test accuracy: 0.95\n",
      "3 Last batch accuracy: 0.96666664 Test accuracy: 0.9574\n",
      "4 Last batch accuracy: 0.97333336 Test accuracy: 0.9663\n",
      "5 Last batch accuracy: 0.9266667 Test accuracy: 0.9658\n",
      "6 Last batch accuracy: 0.96666664 Test accuracy: 0.9657\n",
      "7 Last batch accuracy: 0.96666664 Test accuracy: 0.9727\n",
      "8 Last batch accuracy: 0.9866667 Test accuracy: 0.9711\n",
      "9 Last batch accuracy: 0.98 Test accuracy: 0.9726\n",
      "10 Last batch accuracy: 0.9866667 Test accuracy: 0.9707\n",
      "11 Last batch accuracy: 0.97333336 Test accuracy: 0.9743\n",
      "12 Last batch accuracy: 0.96 Test accuracy: 0.9754\n",
      "13 Last batch accuracy: 0.9533333 Test accuracy: 0.9528\n",
      "14 Last batch accuracy: 0.97333336 Test accuracy: 0.9793\n",
      "15 Last batch accuracy: 0.9866667 Test accuracy: 0.9755\n",
      "16 Last batch accuracy: 0.98 Test accuracy: 0.9683\n",
      "17 Last batch accuracy: 0.98 Test accuracy: 0.9754\n",
      "18 Last batch accuracy: 0.9866667 Test accuracy: 0.9787\n",
      "19 Last batch accuracy: 0.98 Test accuracy: 0.9765\n",
      "20 Last batch accuracy: 0.99333334 Test accuracy: 0.9764\n",
      "21 Last batch accuracy: 0.98 Test accuracy: 0.9745\n",
      "22 Last batch accuracy: 0.9866667 Test accuracy: 0.977\n",
      "23 Last batch accuracy: 0.99333334 Test accuracy: 0.9799\n",
      "24 Last batch accuracy: 0.98 Test accuracy: 0.9776\n",
      "25 Last batch accuracy: 0.9866667 Test accuracy: 0.9774\n",
      "26 Last batch accuracy: 0.9866667 Test accuracy: 0.9785\n",
      "27 Last batch accuracy: 1.0 Test accuracy: 0.979\n",
      "28 Last batch accuracy: 0.9866667 Test accuracy: 0.9724\n",
      "29 Last batch accuracy: 0.96666664 Test accuracy: 0.9792\n",
      "30 Last batch accuracy: 0.99333334 Test accuracy: 0.9808\n",
      "31 Last batch accuracy: 0.98 Test accuracy: 0.9762\n",
      "32 Last batch accuracy: 0.99333334 Test accuracy: 0.9782\n",
      "33 Last batch accuracy: 0.9866667 Test accuracy: 0.9743\n",
      "34 Last batch accuracy: 0.99333334 Test accuracy: 0.9741\n",
      "<<30 more lines>>\n",
      "65 Last batch accuracy: 0.98 Test accuracy: 0.9762\n",
      "66 Last batch accuracy: 1.0 Test accuracy: 0.9795\n",
      "67 Last batch accuracy: 0.99333334 Test accuracy: 0.9765\n",
      "68 Last batch accuracy: 0.9866667 Test accuracy: 0.9818\n",
      "69 Last batch accuracy: 0.99333334 Test accuracy: 0.9795\n",
      "70 Last batch accuracy: 0.99333334 Test accuracy: 0.9812\n",
      "71 Last batch accuracy: 1.0 Test accuracy: 0.9784\n",
      "72 Last batch accuracy: 0.98 Test accuracy: 0.9742\n",
      "73 Last batch accuracy: 0.99333334 Test accuracy: 0.9784\n",
      "74 Last batch accuracy: 0.9866667 Test accuracy: 0.9766\n",
      "75 Last batch accuracy: 0.99333334 Test accuracy: 0.9789\n",
      "76 Last batch accuracy: 1.0 Test accuracy: 0.9759\n",
      "77 Last batch accuracy: 0.9866667 Test accuracy: 0.9747\n",
      "78 Last batch accuracy: 1.0 Test accuracy: 0.9791\n",
      "79 Last batch accuracy: 0.99333334 Test accuracy: 0.9732\n",
      "80 Last batch accuracy: 1.0 Test accuracy: 0.978\n",
      "81 Last batch accuracy: 0.9866667 Test accuracy: 0.9757\n",
      "82 Last batch accuracy: 0.9866667 Test accuracy: 0.9783\n",
      "83 Last batch accuracy: 0.99333334 Test accuracy: 0.976\n",
      "84 Last batch accuracy: 1.0 Test accuracy: 0.9792\n",
      "85 Last batch accuracy: 0.99333334 Test accuracy: 0.9766\n",
      "86 Last batch accuracy: 0.9866667 Test accuracy: 0.9789\n",
      "87 Last batch accuracy: 0.9866667 Test accuracy: 0.9721\n",
      "88 Last batch accuracy: 0.9866667 Test accuracy: 0.9741\n",
      "89 Last batch accuracy: 1.0 Test accuracy: 0.9825\n",
      "90 Last batch accuracy: 1.0 Test accuracy: 0.973\n",
      "91 Last batch accuracy: 0.99333334 Test accuracy: 0.9791\n",
      "92 Last batch accuracy: 0.9866667 Test accuracy: 0.9767\n",
      "93 Last batch accuracy: 0.9866667 Test accuracy: 0.9767\n",
      "94 Last batch accuracy: 0.99333334 Test accuracy: 0.9792\n",
      "95 Last batch accuracy: 0.99333334 Test accuracy: 0.9805\n",
      "96 Last batch accuracy: 1.0 Test accuracy: 0.9769\n",
      "97 Last batch accuracy: 0.99333334 Test accuracy: 0.9806\n",
      "98 Last batch accuracy: 1.0 Test accuracy: 0.9803\n",
      "99 Last batch accuracy: 0.98 Test accuracy: 0.9744\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 100\n",
    "batch_size = 150\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
    "            X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
    "            sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
    "        print(epoch, \"Last batch accuracy:\", acc_batch, \"Test accuracy:\", acc_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-layer RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 28\n",
    "n_inputs = 28\n",
    "n_outputs = 10\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.int32, [None])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_neurons = 100\n",
    "n_layers = 3\n",
    "\n",
    "layers = [tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons,\n",
    "                                      activation=tf.nn.relu)\n",
    "          for layer in range(n_layers)]\n",
    "multi_layer_cell = tf.nn.rnn_cell.MultiRNNCell(layers)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "states_concat = tf.concat(axis=1, values=states)\n",
    "logits = tf.layers.dense(states_concat, n_outputs)\n",
    "xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
    "loss = tf.reduce_mean(xentropy)\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "correct = tf.nn.in_top_k(logits, y, 1)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Last batch accuracy: 0.94 Test accuracy: 0.938\n",
      "1 Last batch accuracy: 0.93333334 Test accuracy: 0.9611\n",
      "2 Last batch accuracy: 0.97333336 Test accuracy: 0.9666\n",
      "3 Last batch accuracy: 0.9866667 Test accuracy: 0.9685\n",
      "4 Last batch accuracy: 0.98 Test accuracy: 0.9721\n",
      "5 Last batch accuracy: 0.96666664 Test accuracy: 0.9752\n",
      "6 Last batch accuracy: 0.99333334 Test accuracy: 0.9787\n",
      "7 Last batch accuracy: 0.97333336 Test accuracy: 0.978\n",
      "8 Last batch accuracy: 0.99333334 Test accuracy: 0.9749\n",
      "9 Last batch accuracy: 0.99333334 Test accuracy: 0.976\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 10\n",
    "batch_size = 150\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
    "            X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
    "            sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
    "        print(epoch, \"Last batch accuracy:\", acc_batch, \"Test accuracy:\", acc_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Time series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "t_min, t_max = 0, 30\n",
    "resolution = 0.1\n",
    "\n",
    "def time_series(t):\n",
    "    return t * np.sin(t) / 3 + 2 * np.sin(t*5)\n",
    "\n",
    "def next_batch(batch_size, n_steps):\n",
    "    t0 = np.random.rand(batch_size, 1) * (t_max - t_min - n_steps * resolution)\n",
    "    Ts = t0 + np.arange(0., n_steps + 1) * resolution\n",
    "    ys = time_series(Ts)\n",
    "    return ys[:, :-1].reshape(-1, n_steps, 1), ys[:, 1:].reshape(-1, n_steps, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure time_series_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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JkesTz/9ND169KBz587ccsstlJaW1u3z8ccfM27cOKKjo+nUqRNjxoxhx44dZGVlccstt1BSUlJ37hYvXgzAiy++yOjRo4mJiSE5OZlZs2Zx5MiRusfMyspCRPjggw8YO3YsNpuNzMxMtmzZ0iDeTZs2MWnSJKKioujUqROTJk0iLy8PAGMMv/nNb0hPTycyMpKhQ4e2uOVHKaWUUqo1aALhhIj3lpZYuXIlaWlpDB06lJtuuon/+7//c9tysHDhQn7wgx9w5ZVXcvToUY4ePcr48ePrtj/wwAPMnz+fXbt2cc0111BeXs5FF13Ev/71L3bu3MmCBQu4/fbb+eCDD9zG9dJLLxESEsLGjRtZunQpv//973nttdfc3ud3v/sdQ4cOZcuWLSxatIif/exnfPrppwDU1tZy7bXXEhISwqZNm3j++ed5+OGHqaioaMHZsnzyySfs2LGD999/n9dee41Vq1bx9NNPA1BdXc2MGTO45JJL2LZtG5999hl33303wcHBjB8/nt///vfYbLa6c7dw4UIAKisrefjhh9m2bRv/+te/KCgo4Prrr2/y3A888AD//d//zZYtW0hISGD27NkYYwDYtm0bV1xxBX379mXDhg1s2rSJ6667jurqagAeeughnnvuOZ555hl27drFAw88wO23387q1atbfA6UUq0nOxvmz4eUFFi1yvo5f761Ximl/JYxxu+XUaNGGVd27drVZJ01J6h3lpa4/PLLzW9/+1tjjDG1tbUmLS3NvP76627vM2fOHDNt2rQG63JycgxgnnjiiWaf87rrrjNz5851+XiXX365GTduXIP7XHnllQ3uc/nll5s777yz7nZaWpr54Q9/2OA+ffv2NY888ogxxpi1a9ea4OBgc/jw4brtGzZsMIBZvny5y1h/9atfmcGDBzeINSUlxVRXV9et+6//+i8zefJkY4wxJ0+eNIDJyspy+njLly83UVFRLp/PYffu3QYw33zzjTHGmHXr1hnArF27tm6f9evXN9jnhhtuaHLeHIqLi01ERIT5+OOPG6xfsGCBmTp1arPxNMfZ34BS9QGbjQ98lnuyuPu8b23vvGOMzWZMaKgxN95orZs927pts1nblVKqI/H0815bIDqo/fv3s379em644QYARITZs2c3243JnczMzAa3a2pqePTRRxk2bBgJCQlER0fzxhtvcOjQ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\n",
      "text/plain": [
       "<Figure size 792x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(t_min, t_max, int((t_max - t_min) / resolution))\n",
    "\n",
    "n_steps = 20\n",
    "t_instance = np.linspace(12.2, 12.2 + resolution * (n_steps + 1), n_steps + 1)\n",
    "\n",
    "plt.figure(figsize=(11,4))\n",
    "plt.subplot(121)\n",
    "plt.title(\"A time series (generated)\", fontsize=14)\n",
    "plt.plot(t, time_series(t), label=r\"$t . \\sin(t) / 3 + 2 . \\sin(5t)$\")\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"b-\", linewidth=3, label=\"A training instance\")\n",
    "plt.legend(loc=\"lower left\", fontsize=14)\n",
    "plt.axis([0, 30, -17, 13])\n",
    "plt.xlabel(\"Time\")\n",
    "plt.ylabel(\"Value\")\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.title(\"A training instance\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "\n",
    "save_fig(\"time_series_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch, y_batch = next_batch(1, n_steps)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.38452097,  2.05081182],\n",
       "       [ 2.05081182,  2.29742291],\n",
       "       [ 2.29742291,  2.0465599 ],\n",
       "       [ 2.0465599 ,  1.34009916],\n",
       "       [ 1.34009916,  0.32948704],\n",
       "       [ 0.32948704, -0.76115235],\n",
       "       [-0.76115235, -1.68967022],\n",
       "       [-1.68967022, -2.25492776],\n",
       "       [-2.25492776, -2.34576159],\n",
       "       [-2.34576159, -1.96789418],\n",
       "       [-1.96789418, -1.24220428],\n",
       "       [-1.24220428, -0.37478448],\n",
       "       [-0.37478448,  0.39387907],\n",
       "       [ 0.39387907,  0.84815766],\n",
       "       [ 0.84815766,  0.85045064],\n",
       "       [ 0.85045064,  0.3752526 ],\n",
       "       [ 0.3752526 , -0.48422846],\n",
       "       [-0.48422846, -1.53852738],\n",
       "       [-1.53852738, -2.54795941],\n",
       "       [-2.54795941, -3.28097239]])"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.c_[X_batch[0], y_batch[0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using an `OuputProjectionWrapper`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create the RNN. It will contain 100 recurrent neurons and we will unroll it over 20 time steps since each traiing instance will be 20 inputs long. Each input will contain only one feature (the value at that time). The targets are also sequences of 20 inputs, each containing a sigle value:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 20\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "n_outputs = 1\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])\n",
    "\n",
    "cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
    "outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At each time step we now have an output vector of size 100. But what we actually want is a single output value at each time step. The simplest solution is to wrap the cell in an `OutputProjectionWrapper`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 20\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "n_outputs = 1\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "cell = tf.contrib.rnn.OutputProjectionWrapper(\n",
    "    tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu),\n",
    "    output_size=n_outputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.001\n",
    "\n",
    "loss = tf.reduce_mean(tf.square(outputs - y)) # MSE\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \tMSE: 11.967254\n",
      "100 \tMSE: 0.525841\n",
      "200 \tMSE: 0.1495599\n",
      "300 \tMSE: 0.07279411\n",
      "400 \tMSE: 0.06158535\n",
      "500 \tMSE: 0.05938873\n",
      "600 \tMSE: 0.05470166\n",
      "700 \tMSE: 0.047849063\n",
      "800 \tMSE: 0.05107608\n",
      "900 \tMSE: 0.047209196\n",
      "1000 \tMSE: 0.047058314\n",
      "1100 \tMSE: 0.047831465\n",
      "1200 \tMSE: 0.04083041\n",
      "1300 \tMSE: 0.047086805\n",
      "1400 \tMSE: 0.041784383\n"
     ]
    }
   ],
   "source": [
    "n_iterations = 1500\n",
    "batch_size = 50\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for iteration in range(n_iterations):\n",
    "        X_batch, y_batch = next_batch(batch_size, n_steps)\n",
    "        sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        if iteration % 100 == 0:\n",
    "            mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "            print(iteration, \"\\tMSE:\", mse)\n",
    "    \n",
    "    saver.save(sess, \"./my_time_series_model\") # not shown in the book"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:                          # not shown in the book\n",
    "    saver.restore(sess, \"./my_time_series_model\")   # not shown\n",
    "\n",
    "    X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
    "    y_pred = sess.run(outputs, feed_dict={X: X_new})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[-3.407753 ],\n",
       "        [-2.4575484],\n",
       "        [-1.1029298],\n",
       "        [ 0.7815629],\n",
       "        [ 2.2002175],\n",
       "        [ 3.126768 ],\n",
       "        [ 3.4037762],\n",
       "        [ 3.3489153],\n",
       "        [ 2.8798013],\n",
       "        [ 2.2659323],\n",
       "        [ 1.6447463],\n",
       "        [ 1.5210768],\n",
       "        [ 1.8972012],\n",
       "        [ 2.7159088],\n",
       "        [ 3.8894904],\n",
       "        [ 5.140914 ],\n",
       "        [ 6.142068 ],\n",
       "        [ 6.666671 ],\n",
       "        [ 6.6410103],\n",
       "        [ 6.0725527]]], dtype=float32)"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure time_series_pred_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Testing the model\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "save_fig(\"time_series_pred_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Without using an `OutputProjectionWrapper`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 20\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
    "rnn_outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_outputs = 1\n",
    "learning_rate = 0.001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
    "stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
    "outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "loss = tf.reduce_mean(tf.square(outputs - y))\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \tMSE: 13.907029\n",
      "100 \tMSE: 0.5056698\n",
      "200 \tMSE: 0.19735886\n",
      "300 \tMSE: 0.101214476\n",
      "400 \tMSE: 0.06850145\n",
      "500 \tMSE: 0.06291986\n",
      "600 \tMSE: 0.055129297\n",
      "700 \tMSE: 0.049436502\n",
      "800 \tMSE: 0.050434686\n",
      "900 \tMSE: 0.0482007\n",
      "1000 \tMSE: 0.04809868\n",
      "1100 \tMSE: 0.04982501\n",
      "1200 \tMSE: 0.041912545\n",
      "1300 \tMSE: 0.049292978\n",
      "1400 \tMSE: 0.043140374\n"
     ]
    }
   ],
   "source": [
    "n_iterations = 1500\n",
    "batch_size = 50\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for iteration in range(n_iterations):\n",
    "        X_batch, y_batch = next_batch(batch_size, n_steps)\n",
    "        sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        if iteration % 100 == 0:\n",
    "            mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "            print(iteration, \"\\tMSE:\", mse)\n",
    "    \n",
    "    X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
    "    y_pred = sess.run(outputs, feed_dict={X: X_new})\n",
    "    \n",
    "    saver.save(sess, \"./my_time_series_model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[-3.4332483],\n",
       "        [-2.4594698],\n",
       "        [-1.1081185],\n",
       "        [ 0.6882153],\n",
       "        [ 2.1105688],\n",
       "        [ 3.0585155],\n",
       "        [ 3.5144088],\n",
       "        [ 3.3531117],\n",
       "        [ 2.808016 ],\n",
       "        [ 2.1606152],\n",
       "        [ 1.662645 ],\n",
       "        [ 1.5578941],\n",
       "        [ 1.9173537],\n",
       "        [ 2.7210245],\n",
       "        [ 3.8667865],\n",
       "        [ 5.100083 ],\n",
       "        [ 6.099999 ],\n",
       "        [ 6.6480975],\n",
       "        [ 6.6147423],\n",
       "        [ 6.022089 ]]], dtype=float32)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Testing the model\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generating a creative new sequence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:                        # not shown in the book\n",
    "    saver.restore(sess, \"./my_time_series_model\") # not shown\n",
    "\n",
    "    sequence = [0.] * n_steps\n",
    "    for iteration in range(300):\n",
    "        X_batch = np.array(sequence[-n_steps:]).reshape(1, n_steps, 1)\n",
    "        y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
    "        sequence.append(y_pred[0, -1, 0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,4))\n",
    "plt.plot(np.arange(len(sequence)), sequence, \"b-\")\n",
    "plt.plot(t[:n_steps], sequence[:n_steps], \"b-\", linewidth=3)\n",
    "plt.xlabel(\"Time\")\n",
    "plt.ylabel(\"Value\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_time_series_model\n",
      "Saving figure creative_sequence_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 792x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./my_time_series_model\")\n",
    "\n",
    "    sequence1 = [0. for i in range(n_steps)]\n",
    "    for iteration in range(len(t) - n_steps):\n",
    "        X_batch = np.array(sequence1[-n_steps:]).reshape(1, n_steps, 1)\n",
    "        y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
    "        sequence1.append(y_pred[0, -1, 0])\n",
    "\n",
    "    sequence2 = [time_series(i * resolution + t_min + (t_max-t_min/3)) for i in range(n_steps)]\n",
    "    for iteration in range(len(t) - n_steps):\n",
    "        X_batch = np.array(sequence2[-n_steps:]).reshape(1, n_steps, 1)\n",
    "        y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
    "        sequence2.append(y_pred[0, -1, 0])\n",
    "\n",
    "plt.figure(figsize=(11,4))\n",
    "plt.subplot(121)\n",
    "plt.plot(t, sequence1, \"b-\")\n",
    "plt.plot(t[:n_steps], sequence1[:n_steps], \"b-\", linewidth=3)\n",
    "plt.xlabel(\"Time\")\n",
    "plt.ylabel(\"Value\")\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(t, sequence2, \"b-\")\n",
    "plt.plot(t[:n_steps], sequence2[:n_steps], \"b-\", linewidth=3)\n",
    "plt.xlabel(\"Time\")\n",
    "save_fig(\"creative_sequence_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Deep RNN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## MultiRNNCell"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 2\n",
    "n_steps = 5\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_neurons = 100\n",
    "n_layers = 3\n",
    "\n",
    "layers = [tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "          for layer in range(n_layers)]\n",
    "multi_layer_cell = tf.nn.rnn_cell.MultiRNNCell(layers)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.random.rand(2, n_steps, n_inputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val, states_val = sess.run([outputs, states], feed_dict={X: X_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 5, 100)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "outputs_val.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Distributing a Deep RNN Across Multiple GPUs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Do **NOT** do this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "with tf.device(\"/gpu:0\"):  # BAD! This is ignored.\n",
    "    layer1 = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "\n",
    "with tf.device(\"/gpu:1\"):  # BAD! Ignored again.\n",
    "    layer2 = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Instead, you need a `DeviceCellWrapper`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "\n",
    "class DeviceCellWrapper(tf.nn.rnn_cell.RNNCell):\n",
    "  def __init__(self, device, cell):\n",
    "    self._cell = cell\n",
    "    self._device = device\n",
    "\n",
    "  @property\n",
    "  def state_size(self):\n",
    "    return self._cell.state_size\n",
    "\n",
    "  @property\n",
    "  def output_size(self):\n",
    "    return self._cell.output_size\n",
    "\n",
    "  def __call__(self, inputs, state, scope=None):\n",
    "    with tf.device(self._device):\n",
    "        return self._cell(inputs, state, scope)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 5\n",
    "n_steps = 20\n",
    "n_neurons = 100\n",
    "\n",
    "X = tf.placeholder(tf.float32, shape=[None, n_steps, n_inputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "devices = [\"/cpu:0\", \"/cpu:0\", \"/cpu:0\"] # replace with [\"/gpu:0\", \"/gpu:1\", \"/gpu:2\"] if you have 3 GPUs\n",
    "cells = [DeviceCellWrapper(dev,tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons))\n",
    "         for dev in devices]\n",
    "multi_layer_cell = tf.nn.rnn_cell.MultiRNNCell(cells)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatively, since TensorFlow 1.1, you can use the `tf.contrib.rnn.DeviceWrapper` class (alias `tf.nn.rnn_cell.DeviceWrapper` since TF 1.2)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-3.29020061e-02  1.17019236e-01 -4.58992608e-02 ...  3.84477153e-02\n",
      "   -5.24900258e-02  5.80436960e-02]\n",
      "  [ 3.54288332e-02 -7.42610693e-02 -6.42375052e-02 ... -2.45757148e-01\n",
      "   -1.77626804e-01 -3.26535292e-03]\n",
      "  [ 2.59726584e-01  1.44605249e-01  3.29312116e-01 ...  3.38821977e-01\n",
      "    5.98853417e-02 -8.31450596e-02]\n",
      "  ...\n",
      "  [ 1.18043743e-01 -2.41663873e-01 -8.27798247e-01 ... -1.85782462e-01\n",
      "    1.89682379e-01 -1.35261893e-01]\n",
      "  [ 2.87830859e-01  3.92953992e-01 -3.15236300e-01 ... -7.85605535e-02\n",
      "    4.32724983e-01 -6.61824420e-02]\n",
      "  [ 7.49779761e-01  6.11052871e-01 -3.01685542e-01 ...  1.95649698e-01\n",
      "   -1.62457466e-01 -5.23968339e-02]]\n",
      "\n",
      " [[-6.68027624e-02  7.35576972e-02 -2.90275402e-02 ... -7.79968277e-02\n",
      "   -3.65773253e-02 -4.66752201e-02]\n",
      "  [ 1.71546549e-01  4.28418722e-03  2.18812120e-03 ...  3.68538052e-02\n",
      "   -8.13241452e-02  9.01001915e-02]\n",
      "  [ 3.45635489e-02 -9.57525298e-02  1.59450233e-01 ...  1.63022086e-01\n",
      "   -6.83046281e-02  1.07990295e-01]\n",
      "  ...\n",
      "  [ 1.96414590e-01 -2.15230390e-01 -5.82537949e-01 ...  3.02532643e-01\n",
      "    5.47862291e-01 -1.06282756e-02]\n",
      "  [ 2.01206997e-01  2.52655987e-02 -5.02945222e-02 ...  9.56110135e-02\n",
      "   -2.03766495e-01 -1.52696133e-01]\n",
      "  [ 4.77758050e-01  1.66605622e-01 -1.56402126e-01 ...  1.67080894e-01\n",
      "   -2.03233853e-01  7.59940522e-05]]]\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    print(sess.run(outputs, feed_dict={X: np.random.rand(2, n_steps, n_inputs)}))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dropout"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "n_layers = 3\n",
    "n_steps = 20\n",
    "n_outputs = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note: the `input_keep_prob` parameter can be a placeholder, making it possible to set it to any value you want during training, and to 1.0 during testing (effectively turning dropout off). This is a much more elegant solution than what was recommended in earlier versions of the book (i.e., writing your own wrapper class or having a separate model for training and testing). Thanks to Shen Cheng for bringing this to my attention."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "keep_prob = tf.placeholder_with_default(1.0, shape=())\n",
    "cells = [tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)\n",
    "         for layer in range(n_layers)]\n",
    "cells_drop = [tf.nn.rnn_cell.DropoutWrapper(cell, input_keep_prob=keep_prob)\n",
    "              for cell in cells]\n",
    "multi_layer_cell = tf.nn.rnn_cell.MultiRNNCell(cells_drop)\n",
    "rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.01\n",
    "\n",
    "stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
    "stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
    "outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])\n",
    "\n",
    "loss = tf.reduce_mean(tf.square(outputs - y))\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Training MSE: 16.386942\n",
      "100 Training MSE: 5.836141\n",
      "200 Training MSE: 3.5285974\n",
      "300 Training MSE: 3.9488692\n",
      "400 Training MSE: 2.2483113\n",
      "500 Training MSE: 4.5033474\n",
      "600 Training MSE: 3.4265506\n",
      "700 Training MSE: 3.4990664\n",
      "800 Training MSE: 3.7004602\n",
      "900 Training MSE: 4.14042\n",
      "1000 Training MSE: 3.5249038\n",
      "1100 Training MSE: 3.3191948\n",
      "1200 Training MSE: 2.9469335\n",
      "1300 Training MSE: 3.2158706\n",
      "1400 Training MSE: 4.4238644\n"
     ]
    }
   ],
   "source": [
    "n_iterations = 1500\n",
    "batch_size = 50\n",
    "train_keep_prob = 0.5\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for iteration in range(n_iterations):\n",
    "        X_batch, y_batch = next_batch(batch_size, n_steps)\n",
    "        _, mse = sess.run([training_op, loss],\n",
    "                          feed_dict={X: X_batch, y: y_batch,\n",
    "                                     keep_prob: train_keep_prob})\n",
    "        if iteration % 100 == 0:                   # not shown in the book\n",
    "            print(iteration, \"Training MSE:\", mse) # not shown\n",
    "    \n",
    "    saver.save(sess, \"./my_dropout_time_series_model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_dropout_time_series_model\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./my_dropout_time_series_model\")\n",
    "\n",
    "    X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
    "    y_pred = sess.run(outputs, feed_dict={X: X_new})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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v/vd79zd/b333vOBAwf6jh07fP/+/X7SSSf5t771LXd3v/jii/3pp592d/e3337bhwwZ4u7u1157rd900009dl1R31cRSR2i6GrY3RuABbEpJ7g73//+9/ntb39LQUEB77333sFugQcOHMiJJ54IwAsvvMApp5zC0UcfDcCcOXPYsmULELoPThwt6pNPPqE2FX0gi4h0IGv7k+8pK1asoKamhhdffJGioiLKysoOdhfcp0+fTh3jwIEDPP/88/Tu3TudSRUROUxW912TLondBe/atYvPfOYzFBUV8dRTT/H222+3us+4cePYsGEDH3/8MY2NjTz44IMH15155pksW7bs4PuNGzcedh4RkXRQkG/FMcccw6RJkxgxYgQbN26kqqqKkSNH8otf/KLN7oI///nP8/3vf5/x48czadIkysrK+NSnPgXAbbfdRlVVFeXl5QwbNow777wTgHPOOYfVq1er4FVE0iaruxrONLW1tZSUlNDY2MisWbOYN28es2bNijpZB2XrfRWRw+VFV8OZ5rrrrqOiooIRI0YwaNAgzj///KiTJCJ5TgWvKRQfxUlEJFPoSV5EJIcpyItIZDROa/opyItIJCorobwc7roLpk6FWbNgypTwvrw8rJfkKciLSI/TOK09R0G+h5TERjB4//33mT17drvb/vCHP6S+vv7g+7POOoudO3emNX0iPSk+Tqt7mCZODMvj47S6h/UNDdGmMxfkRpBvaoI1a+CGG8K8qamHTtv183zuc59j1apV7W7TMsg/9thj9OvXr8vnEslUGqe152R/kG9qgmnT4OKL4dprw3zatKQD/bZt2xgyZAiXXHIJQ4cOZfbs2dTX11NWVsbVV1/NCSecwMqVK6murmb69OmMGTOGyZMnszk2RPzWrVv5yle+wsiRI7nmmmuaHXfEiBGxpDexePFiRowYQXl5OcuWLeO2227j/fffZ+rUqUydOhWAsrIytm/fDsDSpUsZMWIEI0aM4Ic//OHBYw4dOpRvfOMbDB8+nDPPPJM9LcdFE8kgGqe1B3Wmq8p0Tkl3NfzII+4lJfFfeGEqKQnLk7B161YH/JlnnnF398svv9xvuukmHzhwoN94440Htzv11FN9y5Yt7u7+/PPP+9SpU93d/ZxzzvF7773X3d2XL1/uffr0OXjceDfGd9xxh19wwQXe0NDg7u47duxwd/eB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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Testing the model\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Oops, it seems that Dropout does not help at all in this particular case. :/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LSTM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-88-8c7a3c758b70>:3: BasicLSTMCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "This class is deprecated, please use tf.nn.rnn_cell.LSTMCell, which supports all the feature this cell currently has. Please replace the existing code with tf.nn.rnn_cell.LSTMCell(name='basic_lstm_cell').\n"
     ]
    }
   ],
   "source": [
    "reset_graph()\n",
    "\n",
    "lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 28\n",
    "n_inputs = 28\n",
    "n_neurons = 150\n",
    "n_outputs = 10\n",
    "n_layers = 3\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.int32, [None])\n",
    "\n",
    "lstm_cells = [tf.nn.rnn_cell.BasicLSTMCell(num_units=n_neurons)\n",
    "              for layer in range(n_layers)]\n",
    "multi_cell = tf.nn.rnn_cell.MultiRNNCell(lstm_cells)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_cell, X, dtype=tf.float32)\n",
    "top_layer_h_state = states[-1][1]\n",
    "logits = tf.layers.dense(top_layer_h_state, n_outputs, name=\"softmax\")\n",
    "xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
    "loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "correct = tf.nn.in_top_k(logits, y, 1)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
    "    \n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_3:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_4:0' shape=(?, 150) dtype=float32>),\n",
       " LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_5:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_6:0' shape=(?, 150) dtype=float32>),\n",
       " LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_7:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>))"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_layer_h_state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Last batch accuracy: 0.96666664 Test accuracy: 0.9563\n",
      "1 Last batch accuracy: 0.9533333 Test accuracy: 0.9652\n",
      "2 Last batch accuracy: 0.96 Test accuracy: 0.9584\n",
      "3 Last batch accuracy: 0.9866667 Test accuracy: 0.9769\n",
      "4 Last batch accuracy: 0.98 Test accuracy: 0.9836\n",
      "5 Last batch accuracy: 0.9866667 Test accuracy: 0.9843\n",
      "6 Last batch accuracy: 0.99333334 Test accuracy: 0.9869\n",
      "7 Last batch accuracy: 0.9866667 Test accuracy: 0.9857\n",
      "8 Last batch accuracy: 0.99333334 Test accuracy: 0.9878\n",
      "9 Last batch accuracy: 1.0 Test accuracy: 0.9871\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 10\n",
    "batch_size = 150\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
    "            X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
    "            sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
    "        print(epoch, \"Last batch accuracy:\", acc_batch, \"Test accuracy:\", acc_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "lstm_cell = tf.nn.rnn_cell.LSTMCell(num_units=n_neurons, use_peepholes=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "gru_cell = tf.nn.rnn_cell.GRUCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Embeddings"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This section is based on TensorFlow's [Word2Vec tutorial](https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fetch the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "from six.moves import urllib\n",
    "\n",
    "import errno\n",
    "import os\n",
    "import zipfile\n",
    "\n",
    "WORDS_PATH = \"datasets/words\"\n",
    "WORDS_URL = 'http://mattmahoney.net/dc/text8.zip'\n",
    "\n",
    "def mkdir_p(path):\n",
    "    \"\"\"Create directories, ok if they already exist.\n",
    "    \n",
    "    This is for python 2 support. In python >=3.2, simply use:\n",
    "    >>> os.makedirs(path, exist_ok=True)\n",
    "    \"\"\"\n",
    "    try:\n",
    "        os.makedirs(path)\n",
    "    except OSError as exc:\n",
    "        if exc.errno == errno.EEXIST and os.path.isdir(path):\n",
    "            pass\n",
    "        else:\n",
    "            raise\n",
    "\n",
    "def fetch_words_data(words_url=WORDS_URL, words_path=WORDS_PATH):\n",
    "    os.makedirs(words_path, exist_ok=True)\n",
    "    zip_path = os.path.join(words_path, \"words.zip\")\n",
    "    if not os.path.exists(zip_path):\n",
    "        urllib.request.urlretrieve(words_url, zip_path)\n",
    "    with zipfile.ZipFile(zip_path) as f:\n",
    "        data = f.read(f.namelist()[0])\n",
    "    return data.decode(\"ascii\").split()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "words = fetch_words_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['anarchism', 'originated', 'as', 'a', 'term']"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words[:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build the dictionary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "\n",
    "vocabulary_size = 50000\n",
    "\n",
    "vocabulary = [(\"UNK\", None)] + Counter(words).most_common(vocabulary_size - 1)\n",
    "vocabulary = np.array([word for word, _ in vocabulary])\n",
    "dictionary = {word: code for code, word in enumerate(vocabulary)}\n",
    "data = np.array([dictionary.get(word, 0) for word in words])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('anarchism originated as a term of abuse first used',\n",
       " array([5234, 3081,   12,    6,  195,    2, 3134,   46,   59]))"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\" \".join(words[:9]), data[:9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'cycles originated as a term of abuse first used'"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\" \".join([vocabulary[word_index] for word_index in [5241, 3081, 12, 6, 195, 2, 3134, 46, 59]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('culottes', 0)"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words[24], data[24]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate batches"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import deque\n",
    "\n",
    "def generate_batch(batch_size, num_skips, skip_window):\n",
    "    global data_index\n",
    "    assert batch_size % num_skips == 0\n",
    "    assert num_skips <= 2 * skip_window\n",
    "    batch = np.ndarray(shape=[batch_size], dtype=np.int32)\n",
    "    labels = np.ndarray(shape=[batch_size, 1], dtype=np.int32)\n",
    "    span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n",
    "    buffer = deque(maxlen=span)\n",
    "    for _ in range(span):\n",
    "        buffer.append(data[data_index])\n",
    "        data_index = (data_index + 1) % len(data)\n",
    "    for i in range(batch_size // num_skips):\n",
    "        target = skip_window  # target label at the center of the buffer\n",
    "        targets_to_avoid = [ skip_window ]\n",
    "        for j in range(num_skips):\n",
    "            while target in targets_to_avoid:\n",
    "                target = np.random.randint(0, span)\n",
    "            targets_to_avoid.append(target)\n",
    "            batch[i * num_skips + j] = buffer[skip_window]\n",
    "            labels[i * num_skips + j, 0] = buffer[target]\n",
    "        buffer.append(data[data_index])\n",
    "        data_index = (data_index + 1) % len(data)\n",
    "    return batch, labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_index = 0\n",
    "batch, labels = generate_batch(8, 2, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([3081, 3081,   12,   12,    6,    6,  195,  195], dtype=int32),\n",
       " ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term'])"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "batch, [vocabulary[word] for word in batch]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[  12],\n",
       "        [5234],\n",
       "        [   6],\n",
       "        [3081],\n",
       "        [  12],\n",
       "        [ 195],\n",
       "        [   2],\n",
       "        [   6]], dtype=int32),\n",
       " ['as', 'anarchism', 'a', 'originated', 'as', 'term', 'of', 'a'])"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels, [vocabulary[word] for word in labels[:, 0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 128\n",
    "embedding_size = 128  # Dimension of the embedding vector.\n",
    "skip_window = 1       # How many words to consider left and right.\n",
    "num_skips = 2         # How many times to reuse an input to generate a label.\n",
    "\n",
    "# We pick a random validation set to sample nearest neighbors. Here we limit the\n",
    "# validation samples to the words that have a low numeric ID, which by\n",
    "# construction are also the most frequent.\n",
    "valid_size = 16     # Random set of words to evaluate similarity on.\n",
    "valid_window = 100  # Only pick dev samples in the head of the distribution.\n",
    "valid_examples = np.random.choice(valid_window, valid_size, replace=False)\n",
    "num_sampled = 64    # Number of negative examples to sample.\n",
    "\n",
    "learning_rate = 0.01"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "# Input data.\n",
    "train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n",
    "valid_dataset = tf.constant(valid_examples, dtype=tf.int32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [],
   "source": [
    "vocabulary_size = 50000\n",
    "embedding_size = 150\n",
    "\n",
    "# Look up embeddings for inputs.\n",
    "init_embeds = tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0)\n",
    "embeddings = tf.Variable(init_embeds)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_inputs = tf.placeholder(tf.int32, shape=[None])\n",
    "embed = tf.nn.embedding_lookup(embeddings, train_inputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Construct the variables for the NCE loss\n",
    "nce_weights = tf.Variable(\n",
    "    tf.truncated_normal([vocabulary_size, embedding_size],\n",
    "                        stddev=1.0 / np.sqrt(embedding_size)))\n",
    "nce_biases = tf.Variable(tf.zeros([vocabulary_size]))\n",
    "\n",
    "# Compute the average NCE loss for the batch.\n",
    "# tf.nce_loss automatically draws a new sample of the negative labels each\n",
    "# time we evaluate the loss.\n",
    "loss = tf.reduce_mean(\n",
    "    tf.nn.nce_loss(nce_weights, nce_biases, train_labels, embed,\n",
    "                   num_sampled, vocabulary_size))\n",
    "\n",
    "# Construct the Adam optimizer\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "# Compute the cosine similarity between minibatch examples and all embeddings.\n",
    "norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), axis=1, keepdims=True))\n",
    "normalized_embeddings = embeddings / norm\n",
    "valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset)\n",
    "similarity = tf.matmul(valid_embeddings, normalized_embeddings, transpose_b=True)\n",
    "\n",
    "# Add variable initializer.\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration: 0\tAverage loss at step  0 :  289.90948486328125\n",
      "Nearest to over: tt, tuned, manichaeans, fractional, cambridge, balaguer, fluoride, strenuously,\n",
      "Nearest to one: imagines, tijuana, hindrance, motorcyclist, steadfastly, lords, letting, hutchinson,\n",
      "Nearest to were: bezier, antibodies, nicknamed, panthers, compiler, tao, smarter, busy,\n",
      "Nearest to may: failure, rna, efficacious, aspirin, lecompton, definitive, geese, amphibious,\n",
      "Nearest to two: annihilate, bettors, wir, cindy, epinephrine, team, voluntarily, crystallize,\n",
      "Nearest to its: knob, abeokuta, bracelet, bastards, ivens, objectivity, blanton, cold,\n",
      "Nearest to than: lame, watts, stones, sram, elves, zarqawi, applets, cloves,\n",
      "Nearest to these: pedro, condoned, neck, ssn, supervising, doug, thereto, melton,\n",
      "Nearest to they: lowly, deportation, shrewd, reznor, tojo, decadent, occured, risotto,\n",
      "Nearest to is: interests, golfers, dropouts, egyptians, richards, legionnaires, opener, leonel,\n",
      "Nearest to up: clair, drives, steadfast, missed, nashville, kilowatts, anal, vinland,\n",
      "Nearest to he: transitioned, winchell, resh, goldsmiths, standardised, markings, pursued, satirized,\n",
      "Nearest to people: blissymbolics, mike, buffers, untouchables, carolingian, posted, ville, hypertalk,\n",
      "Nearest to more: cactus, sta, reformation, poets, diligently, rsc, ravaged, nabokov,\n",
      "Nearest to was: russo, rammed, investiture, glucagon, heck, adventurer, sharada, homing,\n",
      "Nearest to UNK: reykjav, fi, rosalyn, mainline, archaeologist, armstrong, stevenage, ean,\n",
      "Iteration: 2000\tAverage loss at step  2000 :  132.04802526283265\n",
      "Iteration: 4000\tAverage loss at step  4000 :  62.34032004618645\n",
      "Iteration: 6000\tAverage loss at step  6000 :  41.11393732094765\n",
      "Iteration: 8000\tAverage loss at step  8000 :  31.317130505800247\n",
      "Iteration: 10000\tAverage loss at step  10000 :  25.686955724954604\n",
      "Nearest to over: and, starvation, years, nine, draft, mctaggart, worst, for,\n",
      "Nearest to one: nine, four, five, three, two, seven, six, UNK,\n",
      "Nearest to were: are, loving, coulomb, peuple, pahlavi, accordion, be, prey,\n",
      "Nearest to may: seo, osce, egyptology, two, could, omotic, nine, absurd,\n",
      "Nearest to two: zero, three, four, one, nine, five, eight, six,\n",
      "Nearest to its: the, astatine, advocating, altaic, workings, atomists, nascar, confirm,\n",
      "Nearest to than: asparagales, levitt, more, subsets, nabokov, conformation, bradley, minnesota,\n",
      "Nearest to these: displaced, snowball, tuned, antigua, seceded, fallacy, or, kournikova,\n",
      "Nearest to they: it, vaginal, not, milne, lincoln, that, clues, starved,\n",
      "Nearest to is: are, exists, ampere, mosque, ions, logan, subgroups, in,\n",
      "Nearest to up: integrity, a, flow, laughton, peake, rn, bodyguard, natively,\n",
      "Nearest to he: not, his, was, it, hoxha, carrot, this, domestically,\n",
      "Nearest to people: harbored, simulate, typewriter, fins, men, wikipedia, simply, ignoring,\n",
      "Nearest to more: subproblems, kierkegaard, representations, aruba, lubricants, tetrapods, kano, astatine,\n",
      "Nearest to was: walther, passengers, by, hoxha, and, in, plutonium, breasted,\n",
      "Nearest to UNK: one, the, nine, six, and, five, seven, ginsberg,\n"
     ]
    }
   ],
   "source": [
    "num_steps = 10001\n",
    "\n",
    "with tf.Session() as session:\n",
    "    init.run()\n",
    "\n",
    "    average_loss = 0\n",
    "    for step in range(num_steps):\n",
    "        print(\"\\rIteration: {}\".format(step), end=\"\\t\")\n",
    "        batch_inputs, batch_labels = generate_batch(batch_size, num_skips, skip_window)\n",
    "        feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels}\n",
    "\n",
    "        # We perform one update step by evaluating the training op (including it\n",
    "        # in the list of returned values for session.run()\n",
    "        _, loss_val = session.run([training_op, loss], feed_dict=feed_dict)\n",
    "        average_loss += loss_val\n",
    "\n",
    "        if step % 2000 == 0:\n",
    "            if step > 0:\n",
    "                average_loss /= 2000\n",
    "            # The average loss is an estimate of the loss over the last 2000 batches.\n",
    "            print(\"Average loss at step \", step, \": \", average_loss)\n",
    "            average_loss = 0\n",
    "\n",
    "        # Note that this is expensive (~20% slowdown if computed every 500 steps)\n",
    "        if step % 10000 == 0:\n",
    "            sim = similarity.eval()\n",
    "            for i in range(valid_size):\n",
    "                valid_word = vocabulary[valid_examples[i]]\n",
    "                top_k = 8 # number of nearest neighbors\n",
    "                nearest = (-sim[i, :]).argsort()[1:top_k+1]\n",
    "                log_str = \"Nearest to %s:\" % valid_word\n",
    "                for k in range(top_k):\n",
    "                    close_word = vocabulary[nearest[k]]\n",
    "                    log_str = \"%s %s,\" % (log_str, close_word)\n",
    "                print(log_str)\n",
    "\n",
    "    final_embeddings = normalized_embeddings.eval()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's save the final embeddings (of course you can use a TensorFlow `Saver` if you prefer):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.save(\"./my_final_embeddings.npy\", final_embeddings)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot the embeddings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_with_labels(low_dim_embs, labels):\n",
    "    assert low_dim_embs.shape[0] >= len(labels), \"More labels than embeddings\"\n",
    "    plt.figure(figsize=(18, 18))  #in inches\n",
    "    for i, label in enumerate(labels):\n",
    "        x, y = low_dim_embs[i,:]\n",
    "        plt.scatter(x, y)\n",
    "        plt.annotate(label,\n",
    "                     xy=(x, y),\n",
    "                     xytext=(5, 2),\n",
    "                     textcoords='offset points',\n",
    "                     ha='right',\n",
    "                     va='bottom')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABBcAAAP4CAYAAACGCRToAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XlU1XX+x/HnBREE7KqBa06oU7jA9bIKIW6MS4VYmrlUSk2ZpmM6RZO/UiltMZ1MbRubXEobmVFbNHMcKVzQUtALKqKooaaWKwQoyvL9/eF4J3JJBL2Ar8c5c4TP/Xy/3/fneubkfd3PYjIMAxERERERERGRa+Xk6AJEREREREREpHpTuCAiIiIiIiIiFaJwQUREREREREQqROGCiIiIiIiIiFSIwgURERERERERqRCFCyIiIiIiIiJSIQoXRERERERERKRCFC6IiIiIiIiISIUoXBARERERERGRCqnl6AK8vLwMHx8fR5chIiIiIiIiIr+Qmpp63DAM76vp6/BwwcfHh5SUFEeXISIiIiIiIiK/YDKZ9l9tXy2LEBEREREREZEKUbggIiIiIiIiIhWicEFEREREREREKkThgoiIiIiIiIhUiMIFEREREREREakQhQsiIiIiIiIiUiEKF0RERERERESkQhQuiIiIiIiIiEiFKFwQERERERERkQpRuCAiIiIiIiIiFaJwQUREREREREQqROGCiIiIiIiIiFSIwgURERERERERqRCFCyIiIiIiIiJSIQoXRERERERERKRCFC6IiIiIiIiISIUoXBARERERERGRClG4ICIiIiIiIiIVonBBRERERERERCpE4YKIiIiIiIiIVIjCBRERERERERGpEIULIiIiIiIiIlIhChdEREREREREpEIULoiIiIiIiIhIhShcEBEREREREZEKUbggIiIiIiIiIhWicEFEREREREREKkThgoiIiIiIiIhUiMIFEREREREREakQhQsiIiIiIiIiUiEKF0RERERERESkQhQuiIiIiIiIiEiFKFwQERERERERkQpRuCAiIiIiIiIiFaJwQURERCqdzWZjxYoVji5DREREbhCFCyIiInJFxcXF5b5G4YKIiMjNReGCiIjITW7SpEn4+vrSsWNHBg0axLRp0+jSpQtjxowhODiYGTNmcOzYMfr160dwcDAhISEkJycDsGnTJsLDwwkICOCuu+5i165dnDt3jgkTJpCQkIDVaiUhIcHBIxQREZHrrZajCxAREZHrZ9KkSSxYsABvb2+aN29OUFAQ999/PyNHjuTYsWOUlJRQWFhIWloae/bsITQ0lKSkJAoLC2nevDkpKSnExsZy11134eLiQq9evXjkkUfo2LEjPj4+BAUFcfjwYVJTU7HZbDz88MOYTCYAGjZsSGpqKs7Ozg5+F0REROR608wFERGRGmrz5s0sWbKEtLQ0vvrqK1JSUgAYNmwYs2bNIjU1la5du3L27Fnc3NwYN24ckZGRPPPMMzRs2JDvv//efq8DBw7g4uLC119/Tffu3XF2dua7776je/fuHDhwgI4dOzJixAh27txJcnIyL7/8Mk5OTixcuNBRwxcREZEbSDMXREREaqjk5GT69OmDm5sbbm5u9O7dm8LCQjZs2ED//v0BOHbsGOfOnQNg48aNPPTQQwA0atSI9PR0+71cXFz47rvvcHNzw2q18umnn+Lp6UliYiLu7u6sX7+ed955h0mTJhESEsLJkyfJy8tj3759N37gIiIicsNp5oKIiMhNpLS0lHr16mGz2bDZbHz22Wc0b96cwsJCDMO47CaMVquVWbNm2X/PyMgAIDc3Fyen8/+c+Pbbb/Hw8MBmszF9+nRiYmKIj4+/7mMSERERx1O4ICIiUkNFRESwbNkyCgsLyc/PZ/ny5bi7u9OiRQv+9a9/ARAcHExoaCgWiwWAevXqYTabOXr0KAEBAfZ7PfbYY6SkpGCxWDhw4ACTJk0CoHPnzuTn59O1a1d+97vfcfr0aY4ePUrXrl1JT0+nbdu22tBRRETkJqBlESIiIjVUSEgIMTExWCwWGjVqhL+/P2azmYULFzJixAgmT55MUVERffv2Zffu3WRmZhIaGsobb7zB7373O+bOnWu/1y233GIPCY4ePcqgQYPw8/MjPDycxo0bk5KSgqurK75NGhHUtjUlxcW41K7NlJdfYsCAAY56C0REROQGMRmG4dACgoODjQsbTImIiEjlys/Px9PTk9OnT9OpUydmz55NYGBgmT6DBw8mIyODwsJChg4dyrhx4654z7Nnz+Ls7EytWrXYuHEjI0aMwGazsfKfi9iUlk5pLRdMReeofewQ7oUF9Bg2ijaRXa/nMEVEROQ6MJlMqYZhBF9NX81cEBERqcGGDRtWJjj4dbAA8Mknn5TrngcOHODBBx+ktLSU2rVr88EHH5Cens53OzIwXGoDYNR25WyT2+HIftYt+kjhgoiISA2ncEFERKQGK29wcDXuuOMOtm7dWqZt+vTpGKZfbeXk5Mw572bk7dte6TWIiIhI1aINHUVERKTCcnNzL9luuNSm7q1eN7gaERERudEULoiIiEiFmc3mS7Y7FRcROXDIDa5GREREbjSFCyIiIlJhUVFRuLi4lGkzGaWEtrdovwUREZGbgPZcEBERkQqzWCwAJCYmkpubi9lsJioqyt4uIiIiNZvCBREREakUFotFYYKIiMhNSssiRERERERERKRCFC6IiIiIiIiISIUoXBARERERERGRClG4ICIiIiIiIiIVonBBRERERERERCpE4YKIiIiIiIiIVIjCBRERERERERGpEIULIiIiIiIiIlIhChdEREREREREpEIULoiIiIiIiIhIhShcEBEREREREZEKUbggIiIiIiIiIhWicEFEREREREREKkThgoiIiEgVkZOTw7vvvlvp9503bx6HDx+2/+7j48Px48cr/TkiInLzUrggIiIiUkXcqHChIoqLiyvlPiIiUrMoXBARERGpIp5//nn27t2L1WolLi6OuLg4/Pz88Pf3JyEhAYDS0lKeeuopWrduTffu3bnnnntYvHgxAKmpqXTu3JmgoCB69uzJkSNHWLx4MSkpKTz00ENYrVbOnDkDwKxZswgMDMTf35/MzEwACgoKeOyxxwgNDSUgIIDPP/8cOB9OxMTE0K1bN6KiohzwzoiISFWncEFERESkinj99ddp1aoVNpuNsLAwbDYbaWlprF69mri4OI4cOcLSpUvJzs4mIyODjz/+mI0bNwJQVFTEn/70JxYvXkxqaiqPPfYYL7zwAg888ADBwcEsXLgQm81GnTp1APDy8mLLli2MGDGCadOmAfDKK6/QrVs3Nm3axDfffENcXBwFBQUAbNmyhcWLF7NmzRrHvDkiIlKl1XJ0ASIiIiJysfXr1zNo0CCcnZ1p1KgRnTt3ZvPmzaxfv57+/fvj5ORE48aN6dq1KwC7du1i+/btdO/eHYCSkhKaNGly2fv37dsXgKCgIJYuXQrAqlWr+OKLL+xhQ2FhIQcOHACge/fuNGjQ4LqNV0REqjeFCyIiIiI1gGEYtGvXzj6T4be4uroC4OzsbN9HwTAM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Z8+e6tatm+655x73oIaovK1rV2vl/NnKP3xIsizlHz6klfNna+va1dW+7+3bt2vChAnaunWrWrRooblz55Z7/q9//ascDodycnL0xRdfKCcnR4mJidq2bZsOHTokSVqwYIHGjh1b7bUCAIDqQ7gAAFWktLT0vHBh6tSpuuWWW2pk/6dPn/7d627ZskWzZ89W27Zt9f333+u1115Tp06d9N1336ljx47q3LmzJGnUqFH65ptvJEnGGD3//PMaPny4srOz1aZNG3Xp0kWS1L17dzmdznL72LlzpyZMmKAtW7aoadOmSklJUXp6ujZu3Ci73a6ZM2f+7vp93dr3Fqn01MlybaWnTmrte4uqfd/t27dXXFycJOmBBx5QZmZmuefff/99devWTdHR0dqyZYtyc3NljNGIESO0ePFiHTt2TOvWrdOAAQOqvVYAAFB9CBcA4CxOp1PXX3+97r//fnXp0kV33323CgsLNXXqVMXExCgiIkIPPfSQztxSlpCQoEcffVR2u13Tpk3Txx9/rKeeekpRUVHatWuXRo8erQ8//FCStGHDBt10002KjIzUjTfeqPz8fKWlpWnSpEnu/Q8aNEhr1qw5r6477rhD3bt3V3h4uObPn+9ub9asmZ544glFRkZq3bp1v/u4V61apdtuu01+fq6heK644gpJF5+9QCo/M4Ek9/oVzVLQoUMHxcbGSpLWr1+v3NxcxcXFKSoqSgsXLtQPP/zwu+v3dflHKu7hcqH2qmSMueDjPXv2aMaMGcrIyFBOTo4GDhyo4uJiSdKYMWO0ePFivfvuu7rnnnvcvzsAAKBuIlwAgHNU1M170qRJ2rBhgzZv3qyioiJ98skn7uVPnTolh8Oh5557TkOGDNH06dOVnZ2ta665ptwyw4cP12uvvaZNmzYpPT1djRs3vuya/v73vysrK0sOh0Opqanu2QdOnDihHj16aNOmTbr55ps9Pva9e/e6Qwqn06lOnTrJ6XRqx44dOnXqlN5++2316NHjgus3bNhQZWVl7sdnPkhK5YMKy7LUt29fZWdnKzs7W7m5uXrrrbc8rt9XNb8yuFLtVens35l33nmn3O/h8ePH1bRpUwUFBennn3/W//zP/7ifa9u2rdq2bauUlBSNGTOm2usEAADVi3ABAM5RUTfv1atXq0ePHrrhhhu0atUqbdmyxb388OHDL7nN7du3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\n",
      "text/plain": [
       "<Figure size 1296x1296 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.manifold import TSNE\n",
    "\n",
    "tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)\n",
    "plot_only = 500\n",
    "low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])\n",
    "labels = [vocabulary[i] for i in range(plot_only)]\n",
    "plot_with_labels(low_dim_embs, labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Machine Translation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `basic_rnn_seq2seq()` function creates a simple Encoder/Decoder model: it first runs an RNN to encode `encoder_inputs` into a state vector, then runs a decoder initialized with the last encoder state on `decoder_inputs`. Encoder and decoder use the same RNN cell type but they don't share parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "reset_graph()\n",
    "\n",
    "n_steps = 50\n",
    "n_neurons = 200\n",
    "n_layers = 3\n",
    "num_encoder_symbols = 20000\n",
    "num_decoder_symbols = 20000\n",
    "embedding_size = 150\n",
    "learning_rate = 0.01\n",
    "\n",
    "X = tf.placeholder(tf.int32, [None, n_steps]) # English sentences\n",
    "Y = tf.placeholder(tf.int32, [None, n_steps]) # French translations\n",
    "W = tf.placeholder(tf.float32, [None, n_steps - 1, 1])\n",
    "Y_input = Y[:, :-1]\n",
    "Y_target = Y[:, 1:]\n",
    "\n",
    "encoder_inputs = tf.unstack(tf.transpose(X)) # list of 1D tensors\n",
    "decoder_inputs = tf.unstack(tf.transpose(Y_input)) # list of 1D tensors\n",
    "\n",
    "lstm_cells = [tf.nn.rnn_cell.BasicLSTMCell(num_units=n_neurons)\n",
    "              for layer in range(n_layers)]\n",
    "cell = tf.nn.rnn_cell.MultiRNNCell(lstm_cells)\n",
    "\n",
    "output_seqs, states = tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq(\n",
    "    encoder_inputs,\n",
    "    decoder_inputs,\n",
    "    cell,\n",
    "    num_encoder_symbols,\n",
    "    num_decoder_symbols,\n",
    "    embedding_size)\n",
    "\n",
    "logits = tf.transpose(tf.unstack(output_seqs), perm=[1, 0, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "logits_flat = tf.reshape(logits, [-1, num_decoder_symbols])\n",
    "Y_target_flat = tf.reshape(Y_target, [-1])\n",
    "W_flat = tf.reshape(W, [-1])\n",
    "xentropy = W_flat * tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y_target_flat, logits=logits_flat)\n",
    "loss = tf.reduce_mean(xentropy)\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Exercise solutions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. to 6."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See Appendix A."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. Embedded Reber Grammars"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we need to build a function that generates strings based on a grammar. The grammar will be represented as a list of possible transitions for each state. A transition specifies the string to output (or a grammar to generate it) and the next state."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "default_reber_grammar = [\n",
    "    [(\"B\", 1)],           # (state 0) =B=>(state 1)\n",
    "    [(\"T\", 2), (\"P\", 3)], # (state 1) =T=>(state 2) or =P=>(state 3)\n",
    "    [(\"S\", 2), (\"X\", 4)], # (state 2) =S=>(state 2) or =X=>(state 4)\n",
    "    [(\"T\", 3), (\"V\", 5)], # and so on...\n",
    "    [(\"X\", 3), (\"S\", 6)],\n",
    "    [(\"P\", 4), (\"V\", 6)],\n",
    "    [(\"E\", None)]]        # (state 6) =E=>(terminal state)\n",
    "\n",
    "embedded_reber_grammar = [\n",
    "    [(\"B\", 1)],\n",
    "    [(\"T\", 2), (\"P\", 3)],\n",
    "    [(default_reber_grammar, 4)],\n",
    "    [(default_reber_grammar, 5)],\n",
    "    [(\"T\", 6)],\n",
    "    [(\"P\", 6)],\n",
    "    [(\"E\", None)]]\n",
    "\n",
    "def generate_string(grammar):\n",
    "    state = 0\n",
    "    output = []\n",
    "    while state is not None:\n",
    "        index = np.random.randint(len(grammar[state]))\n",
    "        production, state = grammar[state][index]\n",
    "        if isinstance(production, list):\n",
    "            production = generate_string(grammar=production)\n",
    "        output.append(production)\n",
    "    return \"\".join(output)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's generate a few strings based on the default Reber grammar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTXXTTVPXTVPXTTVPSE BPVPSE BTXSE BPVVE BPVVE BTSXSE BPTVPXTTTVVE BPVVE BTXSE BTXXVPSE BPTTTTTTTTVVE BTXSE BPVPSE BTXSE BPTVPSE BTXXTVPSE BPVVE BPVVE BPVVE BPTTVVE BPVVE BPVVE BTXXVVE BTXXVVE BTXXVPXVVE "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_string(default_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks good. Now let's generate a few strings based on the embedded Reber grammar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTBPVVETE BTBTSSSSSSSXXVVETE BPBTSSSXXTTTTVPSEPE BTBPTTVVETE BPBTXXTVVEPE BTBTXSETE BPBTSSSSSXXTTVPXVPXTTTVVEPE BPBTSSXXTVPSEPE BPBPTTTTTTTVPSEPE BTBTSXSETE BPBPTVPXVVEPE BPBPVVEPE BPBPTVVEPE BTBPTTVPXTTVPSETE BTBTSSXSETE BTBTXXTTVVETE BPBTSXSEPE BPBPTVPSEPE BTBPVVETE BPBTXXTTTVPXTVVEPE BPBPTTVPXTVVEPE BTBPVVETE BPBPTVPXVPXTVVEPE BTBPVVETE BPBTSXSEPE "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_string(embedded_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay, now we need a function to generate strings that do not respect the grammar. We could generate a random string, but the task would be a bit too easy, so instead we will generate a string that respects the grammar, and we will corrupt it by changing just one character:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_corrupted_string(grammar, chars=\"BEPSTVX\"):\n",
    "    good_string = generate_string(grammar)\n",
    "    index = np.random.randint(len(good_string))\n",
    "    good_char = good_string[index]\n",
    "    bad_char = np.random.choice(sorted(set(chars) - set(good_char)))\n",
    "    return good_string[:index] + bad_char + good_string[index + 1:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's look at a few corrupted strings:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTTTXXVVETE BPBTXXSPXTVVEPE BTBTXSPTE BPTTSXXTVPXVVEPE PPBPVPSEPE BTBPTVETE BPTTSSSSSXSEPE BPBSVPSEPE BTBPVVESE BPBTXSEPS BEBTXSETE XPBTXXTVPSEPE BTBPVVEPE BTXPTVVETE BTBPVXETE BVBTXSETE BPTTXXVPXVPSEPE BTBPXVPSETE STBPTTVPXVPXTVPSETE BPBPTVPSESE BPBPVEEPE ETBTXSETE BTBTXSVTE BPBTXXVPSEPP BTBTXXVPSETS "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_corrupted_string(embedded_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's not possible to feed a string directly to an RNN: we need to convert it to a sequence of vectors, first. Each vector will represent a single letter, using a one-hot encoding. For example, the letter \"B\" will be represented as the vector `[1, 0, 0, 0, 0, 0, 0]`, the letter E will be represented as `[0, 1, 0, 0, 0, 0, 0]` and so on. Let's write a function that converts a string to a sequence of such one-hot vectors. Note that if the string is shorted than `n_steps`, it will be padded with zero vectors (later, we will tell TensorFlow how long each string actually is using the `sequence_length` parameter)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "def string_to_one_hot_vectors(string, n_steps, chars=\"BEPSTVX\"):\n",
    "    char_to_index = {char: index for index, char in enumerate(chars)}\n",
    "    output = np.zeros((n_steps, len(chars)), dtype=np.int32)\n",
    "    for index, char in enumerate(string):\n",
    "        output[index, char_to_index[char]] = 1.\n",
    "    return output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 1],\n",
       "       [0, 0, 0, 1, 0, 0, 0],\n",
       "       [0, 1, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 1, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "string_to_one_hot_vectors(\"BTBTXSETE\", 12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now generate the dataset, with 50% good strings, and 50% bad strings:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_dataset(size):\n",
    "    good_strings = [generate_string(embedded_reber_grammar)\n",
    "                    for _ in range(size // 2)]\n",
    "    bad_strings = [generate_corrupted_string(embedded_reber_grammar)\n",
    "                   for _ in range(size - size // 2)]\n",
    "    all_strings = good_strings + bad_strings\n",
    "    n_steps = max([len(string) for string in all_strings])\n",
    "    X = np.array([string_to_one_hot_vectors(string, n_steps)\n",
    "                  for string in all_strings])\n",
    "    seq_length = np.array([len(string) for string in all_strings])\n",
    "    y = np.array([[1] for _ in range(len(good_strings))] +\n",
    "                 [[0] for _ in range(len(bad_strings))])\n",
    "    rnd_idx = np.random.permutation(size)\n",
    "    return X[rnd_idx], seq_length[rnd_idx], y[rnd_idx]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, l_train, y_train = generate_dataset(10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's take a look at the first training instances:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 1, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 1, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 1],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 1, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 1],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 0, 1, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 1, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's padded with a lot of zeros because the longest string in the dataset is that long. How long is this particular string?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "23"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l_train[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What class is it?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0])"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Perfect! We are ready to create the RNN to identify good strings. We build a sequence classifier very similar to the one we built earlier to classify MNIST images, with two main differences:\n",
    "* First, the input strings have variable length, so we need to specify the `sequence_length` when calling the `dynamic_rnn()` function.\n",
    "* Second, this is a binary classifier, so we only need one output neuron that will output, for each input string, the estimated log probability that it is a good string. For multiclass classification, we used `sparse_softmax_cross_entropy_with_logits()` but for binary classification we use `sigmoid_cross_entropy_with_logits()`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "possible_chars = \"BEPSTVX\"\n",
    "n_inputs = len(possible_chars)\n",
    "n_neurons = 30\n",
    "n_outputs = 1\n",
    "\n",
    "learning_rate = 0.02\n",
    "momentum = 0.95\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, None, n_inputs], name=\"X\")\n",
    "seq_length = tf.placeholder(tf.int32, [None], name=\"seq_length\")\n",
    "y = tf.placeholder(tf.float32, [None, 1], name=\"y\")\n",
    "\n",
    "gru_cell = tf.nn.rnn_cell.GRUCell(num_units=n_neurons)\n",
    "outputs, states = tf.nn.dynamic_rnn(gru_cell, X, dtype=tf.float32,\n",
    "                                    sequence_length=seq_length)\n",
    "\n",
    "logits = tf.layers.dense(states, n_outputs, name=\"logits\")\n",
    "y_pred = tf.cast(tf.greater(logits, 0.), tf.float32, name=\"y_pred\")\n",
    "y_proba = tf.nn.sigmoid(logits, name=\"y_proba\")\n",
    "\n",
    "xentropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=logits)\n",
    "loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
    "optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate,\n",
    "                                       momentum=momentum,\n",
    "                                       use_nesterov=True)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "correct = tf.equal(y_pred, y, name=\"correct\")\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32), name=\"accuracy\")\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's generate a validation set so we can track progress during training:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_val, l_val, y_val = generate_dataset(5000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   0  Train loss: 0.6727, accuracy: 66.00%  Validation accuracy: 59.34%\n",
      "   1  Train loss: 0.6553, accuracy: 68.00%  Validation accuracy: 61.82%\n",
      "   2  Train loss: 0.6200, accuracy: 76.00%  Validation accuracy: 72.50%\n",
      "   3  Train loss: 0.4908, accuracy: 82.00%  Validation accuracy: 73.22%\n",
      "   4  Train loss: 0.4798, accuracy: 84.00%  Validation accuracy: 80.02%\n",
      "   5  Train loss: 0.6061, accuracy: 74.00%  Validation accuracy: 72.68%\n",
      "   6  Train loss: 0.5447, accuracy: 78.00%  Validation accuracy: 74.30%\n",
      "   7  Train loss: 0.3604, accuracy: 88.00%  Validation accuracy: 86.40%\n",
      "   8  Train loss: 0.3276, accuracy: 86.00%  Validation accuracy: 87.50%\n",
      "   9  Train loss: 0.1783, accuracy: 96.00%  Validation accuracy: 94.18%\n",
      "  10  Train loss: 0.1361, accuracy: 98.00%  Validation accuracy: 95.10%\n",
      "  11  Train loss: 0.1164, accuracy: 98.00%  Validation accuracy: 96.40%\n",
      "  12  Train loss: 0.2118, accuracy: 94.00%  Validation accuracy: 97.26%\n",
      "  13  Train loss: 0.0821, accuracy: 98.00%  Validation accuracy: 97.92%\n",
      "  14  Train loss: 0.0633, accuracy: 92.00%  Validation accuracy: 94.28%\n",
      "  15  Train loss: 0.0909, accuracy: 98.00%  Validation accuracy: 97.76%\n",
      "  16  Train loss: 0.0116, accuracy: 100.00%  Validation accuracy: 99.86%\n",
      "  17  Train loss: 0.0011, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  18  Train loss: 0.0008, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  19  Train loss: 0.0006, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  20  Train loss: 0.0004, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  21  Train loss: 0.0004, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  22  Train loss: 0.0003, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  23  Train loss: 0.0003, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  24  Train loss: 0.0003, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  25  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  26  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  27  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  28  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  29  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  30  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  31  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  32  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  33  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  34  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  35  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  36  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  37  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  38  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  39  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  40  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  41  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  42  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  43  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  44  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  45  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  46  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  47  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  48  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  49  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 50\n",
    "batch_size = 50\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        X_batches = np.array_split(X_train, len(X_train) // batch_size)\n",
    "        l_batches = np.array_split(l_train, len(l_train) // batch_size)\n",
    "        y_batches = np.array_split(y_train, len(y_train) // batch_size)\n",
    "        for X_batch, l_batch, y_batch in zip(X_batches, l_batches, y_batches):\n",
    "            loss_val, _ = sess.run(\n",
    "                [loss, training_op],\n",
    "                feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
    "        acc_train = accuracy.eval(feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
    "        acc_val = accuracy.eval(feed_dict={X: X_val, seq_length: l_val, y: y_val})\n",
    "        print(\"{:4d}  Train loss: {:.4f}, accuracy: {:.2f}%  Validation accuracy: {:.2f}%\".format(\n",
    "            epoch, loss_val, 100 * acc_train, 100 * acc_val))\n",
    "        saver.save(sess, \"./my_reber_classifier\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's test our RNN on two tricky strings: the first one is bad while the second one is good. They only differ by the second to last character. If the RNN gets this right, it shows that it managed to notice the pattern that the second letter should always be equal to the second to last letter. That requires a fairly long short-term memory (which is the reason why we used a GRU cell)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_reber_classifier\n",
      "\n",
      "Estimated probability that these are Reber strings:\n",
      "BPBTSSSSSSSXXTTVPXVPXTTTTTVVETE: 13.30%\n",
      "BPBTSSSSSSSXXTTVPXVPXTTTTTVVEPE: 99.97%\n"
     ]
    }
   ],
   "source": [
    "test_strings = [\n",
    "    \"BPBTSSSSSSSXXTTVPXVPXTTTTTVVETE\",\n",
    "    \"BPBTSSSSSSSXXTTVPXVPXTTTTTVVEPE\"]\n",
    "l_test = np.array([len(s) for s in test_strings])\n",
    "max_length = l_test.max()\n",
    "X_test = [string_to_one_hot_vectors(s, n_steps=max_length)\n",
    "          for s in test_strings]\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./my_reber_classifier\")\n",
    "    y_proba_val = y_proba.eval(feed_dict={X: X_test, seq_length: l_test})\n",
    "\n",
    "print()\n",
    "print(\"Estimated probability that these are Reber strings:\")\n",
    "for index, string in enumerate(test_strings):\n",
    "    print(\"{}: {:.2f}%\".format(string, 100 * y_proba_val[index][0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ta-da! It worked fine. The RNN found the correct answers with high confidence. :)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 8. and 9."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Coming soon..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
